package com.durian.ui.dialog

import android.os.Parcel
import android.os.Parcelable
import android.view.WindowManager
import androidx.annotation.StyleRes
import com.durian.base.R
import com.durian.base.utils.UIUtils

class NiceDialogConfig() : Parcelable {
    //    边距
    var leftAndRightMargin = 0
        set(value) {
            if (value > 0){
                field = value
                width = 0
            }
        }
    var width = WindowManager.LayoutParams.MATCH_PARENT
        set(value) {
            if (value > 0){
                field = value
            }
        }
        get() {
            return if (leftAndRightMargin > 0){
                UIUtils.screenWidth() - leftAndRightMargin
            }else{
                field
            }
        }
    var topAndBottomMargin = 0
        set(value) {
            if (value > 0){
                field = value
                width = 0
            }
        }
    var height = WindowManager.LayoutParams.WRAP_CONTENT
        set(value) {
            if (value > 0){
                field = value
            }
        }
        get() {
            return if (topAndBottomMargin > 0){
                UIUtils.screenHeight() - topAndBottomMargin
            }else{
                field
            }
        }
    //    灰度深浅
    var dimAmount = 0.5f

    //    是否底部显示
    var showBottom = false
        set(value) {
            if (value) {
                animStyleRes = R.style.base_dialog_bottom_animation
            }
            field = value
        }

    //    是否点击外部取消
    var outCancel = true

    //    打开动画
    @StyleRes
    var animStyleRes = 0

    constructor(parcel: Parcel) : this() {
        dimAmount = parcel.readFloat()
        outCancel = parcel.readByte() != 0.toByte()
        animStyleRes = parcel.readInt()
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeFloat(dimAmount)
        parcel.writeByte(if (outCancel) 1 else 0)
        parcel.writeInt(animStyleRes)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<NiceDialogConfig> {
        override fun createFromParcel(parcel: Parcel): NiceDialogConfig {
            return NiceDialogConfig(parcel)
        }

        override fun newArray(size: Int): Array<NiceDialogConfig?> {
            return arrayOfNulls(size)
        }
    }
}